﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//#include <math.h>
//int main()
//{
//	double r = sqrt(16.0);
//	printf("%.1lf\n", r);
//	return 0;
//}

//写⼀个加法函数，完成2个整型变量的加法操作。
//int Add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//
//int main()
//{
//	int n1 = 0;
//	int n2 = .;
//	scanf("%d %d", &n1, &n2);
//
//	//写一个加法函数;
//	int r = Add(n1, n2);
//	printf("%d\n", r);
//
//	return 0;
//}

//int Add(int x, int y)//形式参数，但是形参的名字可以和实参的名字相同
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int r = Add(a, b);//函数调用
//	printf("%d\n", r);
//	return 0;
//}

//简化
//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int r = Add(a, b);
//	printf("%d\n", r);
//	return 0;
//}

//错误示范，有些情况没有返回值
//int test(int n)
//{
//	if (n < 0)
//		return 1;
//}
//int main()
//{
//	int r = test(10);
//	printf("%d\n", r);
//	return 0;
//}

//test()//函数返回类型不写，默认是int
//{
//	//...
//	return 1;
//}
//
// 如果一个函数有明确的放回类型，但是函数内部没有return 的返回值，最终返回什么值，是不确定的
//int main()
//{
//	
//	return 0;
//}

//函数定义：返回类型 + 函数名 + 参数 + 返回值

//写⼀个函数将⼀个整型数组的内容，全部置为-1，再写⼀个函数打印数组的内容
//void set_arr(int arr[], int sz) {
//	int i = 0;
//	for (i = 0; i < sz; i++) {
//		arr[i] = -1;
//	}
//}
//
//void printf_arr(int arr[], int sz) {
//	int i = 0;
//	for (i = 0; i < sz; i++) {
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	set_arr(arr, sz);
//
//	printf_arr(arr, sz);
//	return 0;
//}
//数组传参，其实传递的是数组的地址，在形参部分访问数组的时候，其实操作的就是主调函数中的数组
//数组传参的时候，在形参部分，不会新建数组，所以也就不需要数组的大小

//void set_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		arr[i] = -1;
//	}
//}
//
//void print_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < 10; i++) {
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[10]);
//	set_arr(arr, sz);
//	print_arr(arr, sz);
//	return 0;
//}

//矩阵数组转置
//int main()
//{
//	int i = 0;
//	int j = 0;
//	scanf("%d %d", &i, &j);
//	int n = 0;
//	int m = 0;
//	int arr[10][10] = { 0 };
//	for (n = 0; n < i; n++)
//	{
//		for (m = 0; m < j; m++)
//		{
//			scanf("%d", &arr[n][m]);
//		}
//	}
//
//	//输出
//	for (n = 0; n < j; n++)
//	{
//		for (m = 0; m < i; m++)
//		{
//			printf("%d ", arr[m][n]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//假设我们计算某年某⽉有多少天？
//函数定义不可嵌套，但是函数调用可以嵌套
//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
//		return 1;
//	else
//		return 0;
//}
//
//int get_days_of_month(int y, int m)
//{
//	//31 28 31 30 31 30 31 31 30 31 30 31
//	//   29
//	int days[13] = { 0 ,31 , 28 , 31 , 30 ,31 , 30 , 31 , 31 ,30 ,31 ,30, 31 };
//	//可以灵活运用下标来表示月份
//
//	int d = days[m];
//
//	//特殊情况---闰年的2月会有所不同
//	if ( is_leap_year(y) && m == 2) 
//	{
//		d += 1;
//	}
//
//	return d;
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d %d", &year, &month);
//
//	int day = get_days_of_month(year, month);
//	printf("%d\n", day);
//
//	return 0;
//}

//int is_leap_year(int y)
//{
//	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) {
//		return 1;
//	}
//	else {
//		return 0;
//	}
//}
//
//int get_days_of_month(int y, int m)
//{
//	int days[13] = { 0 ,31 , 28 , 31 , 30 ,31 , 30 , 31 , 31 ,30 ,31 ,30, 31 };
//
//	int d = days[m];
//	if (is_leap_year(y) && m == 2) {
//		d += 1;
//	}
//	return d;
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d %d", &year, &month);
//
//	int days = get_days_of_month(year, month);
//	printf("%d", days);
//	return 0;
//}


//链式访问
//#include <string.h>
//int main()
//{
//	printf("%zd\n", strlen("abcdef"));
//	printf("%d", printf("%d", printf("%d", 43)));
//	return 0;
//}


//#include "add.h"
////导入静态库
//#pragma comment(lib ,"add.lib")

//#include "add.h"  //头文件的包含解决的也是声明的问题
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//
//	int c = Add(a, b);
//	printf("%d\n", c);
//	return 0;
//}

//extern声明外部符号
//全局变量的生命周期很长，还可以跨文件存储;
//extern int g_val;
//int main()
//{
//	printf("%d\n", g_val);
//	return 0;
//}

//声明外部函数
extern int Add(int x, int y);

int main()
{
	int a = 10;
	int b = 20;
	int c = Add(a, b);
	printf("%d\n", c);
	return 0;
}